/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package worms;

import gameengine.*;
import java.awt.*;
import java.util.Vector;

/**
 * Classe que representa a barra de life do jogador
 * @author Victor
 */
public class BarraLife implements PlayerStateListener
{
	private GameContainer container;
	private Player player;
	
	private static final Point POSICAO_BARRA_ESQUERDA = new Point(49, 23);
	private static final Point POSICAO_BARRA_DIREITA = new Point(751, 23);
	private static final Point POSICAO_INICIAL_QUADRADOS_ESQUERDA = new Point(59, 8);
	private static final Point POSICAO_INICIAL_QUADRADOS_DIREITA = new Point(124, 7);
	private static final int DISTANCIA_QUADRADINHOS = 2;

	private Vector<SpriteEstatica> quadradosVida = new Vector<SpriteEstatica>();

	public BarraLife(GameContainer container, Player player)
	{
		this.container = container;
		this.player = player;

		player.AddListener(this);

		Configurar();
	}

	/**
	 * Disparado quando a vida do player é diminuida
	 * @owner Victor
	 */
	public void OnVidaDiminuida(Player player)
	{
		int vidaAtual = player.GetVida();
		
		if (vidaAtual >= 0)
		{
			if (quadradosVida.size() > 0)
			{
				SpriteEstatica quadradoVida = quadradosVida.get(vidaAtual);
				quadradosVida.remove(quadradoVida);
				container.RemoveSprite(quadradoVida);
			}
		}
	}

	/**
	 * Disparado quando o player morre
	 * @owner Victor
	 */
	public void OnMorreu(Player player)
	{
	
	}

	/**
	 * Adiciona a barra de life para aparecer no cenário
	 * @owner Victor
	 */
	private void Configurar()
	{
		Point posicaoBarra = null;
		String sprite = null;
		Point posicaoInicialQuadrados = null;
		int modificador = 0;

		switch(player.GetLado())
		{
			case Player.LADO_ESQUERDO:
				posicaoBarra = POSICAO_BARRA_ESQUERDA;
				sprite = "./src/worms/images/barra_p1.png";
				posicaoInicialQuadrados = POSICAO_INICIAL_QUADRADOS_ESQUERDA;
				modificador = 1;
				break;
			case Player.LADO_DIREITO:
				posicaoBarra = POSICAO_BARRA_DIREITA;
				sprite = "./src/worms/images/barra_p2.png";
				posicaoInicialQuadrados = POSICAO_INICIAL_QUADRADOS_DIREITA;
				modificador = -1;
				break;
		}

		SpriteEstatica barra = new SpriteEstatica(new Textura(sprite), posicaoBarra);
		container.AddSprite(barra);

		Point posicaoAtual = new Point(posicaoBarra.x + posicaoInicialQuadrados.x, posicaoBarra.y + posicaoInicialQuadrados.y);
		for(int i = 0; i < Player.VIDA_MAXIMA; i++)
		{
			SpriteEstatica quadradoVida = new SpriteEstatica(new Textura("./src/worms/images/life.png"), (Point)posicaoAtual.clone());
			container.AddSprite(quadradoVida);

			posicaoAtual.x += (quadradoVida.GetRetanguloDesenho().width + DISTANCIA_QUADRADINHOS) * modificador;

			quadradosVida.add(quadradoVida);
		}
	}
}